﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Library.DAL;
using System.Data;

namespace Library.BLL
{
    public class PagadoresController: BaseController
    {
        const string tableName = "PAGADORES";
        public PagadoresController(): base(tableName) 
        {
        }

        public DataTable createDataTable()
        {
            DataTable dt = new DataTable(tableName);

            dt.Columns.Add(new DataColumn("COD_PAGADOR", typeof(int)));
            dt.Columns.Add(new DataColumn("NOME_PAGADOR", typeof(String)));
            return dt;
        }

        public Int32 getNextCodigoPagador()
        {
            string query = " SELECT MAX(COD_PAGADOR) + 1 FROM PAGADORES ";
            return Convert.ToInt32((this.executeQuery(query)).Rows[0][0]);
        }

        /// <summary>
        /// Busca Pagadores por período
        /// Formato da data de entrada MM/YYYY
        /// </summary>
        /// <returns></returns>
        public DataTable getPagadoresPorPeriodo(string periodo)
        {
            StringBuilder sbQuery = new StringBuilder();
            sbQuery.Append(" SELECT DISTINCT PAGADORES.COD_PAGADOR, PAGADORES.NOME_PAGADOR ");
            sbQuery.Append(" FROM            (PAGADORES INNER JOIN ");
            sbQuery.Append(" VIAGENS ON PAGADORES.COD_PAGADOR = VIAGENS.COD_PAGADOR) ");
            sbQuery.Append(" WHERE        FORMAT(VIAGENS.DT_SAIDA, 'MM/YYYY') = '");
            sbQuery.Append(periodo);
            sbQuery.Append("'");

            return this.executeQuery(sbQuery.ToString());
        }
    }
}
